package drp.snowbell.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface AEntity {
	/**
	 * 名称(beanName)
	 * 
	 * @return
	 */
	String name() default "";// beanName

	/**
	 * 数据库表名
	 * 
	 * @return
	 */
	String table() default "";// tabelName

	/**
	 * 存储器类名.
	 * 
	 * @return
	 */
	String storage() default "";// storageClass

	/**
	 * 存储器监听类
	 * 
	 * @return
	 */
	// String storageListener() default "";// storageListener

	// String className();className可以通过反射读取.

	/**
	 * 验证器类名
	 */
	// String validation() default "";// validationClass

	/**
	 * Part名称列表.格式为module.part,用逗号分隔多个部件.如果技能需要设置配置的话.格式为JSONArray格式.
	 * 譬如:[{module:"Module1",name:"Part1",config:{
	 * type:"test"}},{module:"Module2",name:"Part2"}]
	 * 
	 * @return
	 */
	String parts() default "";// Part List.

	/**
	 * 是否缓存.如果数据条数比较少(1000条内),但是使用率高(特别是loadWithId,loadWithProp使用率高),建议设置为true.
	 * 
	 * @return
	 */
	boolean isCache() default false;

	/**
	 * 全文搜索分词器
	 * 
	 * @return
	 */
	// String fullTextAnalyzer() default "";

	/**
	 * 全文搜索排序属性名称.用于重建索引.重建的时候会根据此属性排序.
	 */
	// String fullTextOrderProperty() default "";

	/**
	 * 全文搜索排序是否顺序.用于重建索引.默认是顺序
	 */
	// boolean fullTextOrderIsDesc() default false;

	/**
	 * 配置系统的配置定义JSON字符串.<br/>
	 * 配置系统的配置定义.key为配置系统的配置名称,value为配置系统的值类型. 如果要定义数据长度则格式为:"类型:长度".譬如:
	 * "String:50"
	 */
	String configDefinitions() default "";

}
